const app = getApp()
var timeCount = null, timeCount_1=null
import { phoneList, phoneNumber, saleType, resourceType, callType, tab } from "../../common/static/api_data.js"
import { makePhoneCall } from "../../utils/http"
import { mobileModel, testPhone } from "../../utils/method.js"
import filter from '../../mixins/filter';
import { HiddenCall } from '../../request/api'
const request = new HiddenCall
import { throttle } from '../../utils/throttle.js'
import form_submit from '../../mixins/form_submit'
import tab_index from '../../mixins/tab_index.js'
Page({
  /**
*  消息页
* - @author           狄兆璐
* - @date             2018-07-03
* phoneList          通话记录搜索条件
* saleType            房客源
* resourceType    房客源类型
* swiperIndex      swiper 索引
* phoneNumber  手机拨号键数字
* tel                     手机号
* page                 电话列表页数
* isIos                  是否苹果手机
*/
  mixins: [filter, form_submit, tab_index],
  data: {
    saleType,
    resourceType,
    callType,
    phoneList,
    swiperIndex: 0,
    phoneNumber,
    tel: "",
    page: 1,
    isIos: false,
    tabIndex: 0,
    tab,
    flag: 0,
    flag_1: 0
  },
  onLoad: function (options) {
    // tab 如果填写跟进有索引则赋予
    this.setData({ tabIndex: app.globalData.swindex ? app.globalData.swindex : 0})
    // 隐藏导航栏dzl
    // this.hideNavBar()
    //调用方法获取机型
    mobileModel().then((res) => {
      this.setData({ isIos: res })
    })
    // 获取区域和屏幕高度
    this.getHeight()
    if (this.data.tabIndex === 2) {
      this.smsList()
      return
    }
    if (this.data.tabIndex === 1) {
      this.callList({ "page": 1, "size": 21 })
      return
    }
  },
  onShow() {
    if (app.globalData.phoneSearch) {
      this.callList(app.globalData.phoneSearch)
    }
  },
  /**
   * 查询电话列表数据
   * author wl
   */
  callList: function(data) {
    let that = this
    timeCount = setInterval(() => {
      this.data.flag += 1
      if (this.data.flag > 0) {
        that.setData({ animation: true })
      }
    }, 200)
    request.callList(data).then((res) => {
      // 有数据获取列表，当前页数
      if (res) {
        this.setData({ list: res, count: res.page })
        wx.stopPullDownRefresh()
        wx.hideNavigationBarLoading()
        // 停止计算
        clearInterval(timeCount)
        timeCount = null
        that.setData({ animation: false })
      }
      // 更改列表的高度
      // this.changeHeight(res.content)
    }).catch((err) => {
      // 获取错误信息
      this.setData({ errCode: err })
    })
  },
  /**
   * 获取页面高度
   * author wl
   */
  domInter: function(value, _this) {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        // 获取当前的查询
        var query = wx.createSelectorQuery().in(_this)
        // 查询当前dom的信息
        query.select(value).boundingClientRect(function (res) {
          resolve(res)
        }).exec()
      }, 200)
    })
  },
  /**
   * 所有列表拨号键页面获取手机号
   * author wl
   */
  getNumber(e) {
    if (this.data.tel.length < 11) {
      // 拨号键获取数字
      let num = e.currentTarget.dataset.num
      // 赋值手机号变量
      this.setData({ tel: this.data.tel += num })
    }
  },
  /**
   * 所有列表拨号键页面获取手机号
   * author 赵美阳
   * date 2019-04-13
   */
  inputPhoneNum(e){
    this.setData({ tel: e.detail.value })
  },
  /**
  * 单击删除全部手机号
  * author wl
  */
  deletePhoneNum() {
    // 清空输入的手机号
    this.setData({ tel: '' })
  },
  /**
 * 所有列表拨号键页面拨打电话
 * author dzl
 */
  makePhone: throttle(function () {
    // 手机号不为空
    if (this.data.tel !== "") {
      // 验证手机号
      let isCall = this.testTel(this.data.tel)
      if (isCall) {
        let called = this.data.tel
        let caller = app.globalData.phonenumber
        // 拨打电话传入拨打手机号和被呼叫手机号
        request.directCall({ called }).then(res => {
          // 拨打电话，跳转所有列表
          this.phoneCall(res)
          called = ''
          this.setData({ tel: ''})
        })
      }
    } else {
      // 友好提示
      wx.showToast({ title: '手机号不能为空！', icon: 'none' })
    }
  }, 2000),
  /**
   * 短信发送
   * @author wl
   */
  btnSms() {
    if (this.data.tel !== "") {
      // 验证手机号
      let isCall = testPhone(this.data.tel)
      // 短信详情参数，以便切换不同页面
      if (isCall) {
        let data = {
          callType: "sms",  
          detailType: "allDetail",
          callModel: { customerPhone: this.data.tel }
        }
        // 进入短信详情带入参数
        wx.navigateTo({
          url: `../mailing_detail/index?model=${JSON.stringify(data)}`
        })
      } else {
        wx.showToast({ title: '请输入正确手机号！', icon: 'none' })
      }
    } else {
      // 友好提示
      wx.showToast({ title: '手机号不能为空！', icon: 'none' })
    }
  },
  /**
   * 验证手机号
   */
  testTel(phone) {
    if (phone.length < 8) {
      wx.showToast({ title: '手机号输入错误或缺少区号！', icon: "none" })
      return false
    } else {
      return true
    }
  },
  /**
    * 所有页面下拉刷新数据
    * author dzl
    */
  onPullDownRefresh() {
    this.data.tabIndex !==0 ? wx.showNavigationBarLoading():""
    // 设置刷新初始页数
    this.setData({ page: 1 }) // isRefCall: true, margin: true
    // 如果有筛选条件获取带有筛选条件的数据
    if (app.globalData.phoneSearch && (app.globalData.phoneSearch.name || app.globalData.phoneSearch.code)) {
      app.globalData.phoneSearch.page = 1
      // 获取个数
      app.globalData.phoneSearch.size = 21
      // 调用接口
      this.callList(tapp.globalData.phoneSearch)
    } else {
      // 如果没有筛选条件获取普通数据
      this.callList({ "page": 1, "size": 21, "callRecordsPageWhereVO": {} })
    }
    if (this.data.tabIndex === 2) {
      this.smsList()
    }
  },
  /**
  * 所有列表上拉加载操作
  * author　dzl
  */
  onReachBottom() {
    // 如果不为拨号键页面
    if (this.data.tabIndex !==0){
      wx.showNavigationBarLoading()
      // 设置加载页数
      this.data.page += parseInt(this.data.count)
      // 如果有筛选条件获取带有筛选条件的数据
      if (app.globalData.phoneSearch && (app.globalData.phoneSearch.name || app.globalData.phoneSearch.code)) {
        app.globalData.phoneSearch.page = this.data.page
        // 获取个数
        app.globalData.phoneSearch.size = 21
        // 调用接口
        this.pullList(app.globalData.phoneSearch)
      } else {
        // 没有筛选条件获取普通数据
        this.pullList({ "page": this.data.page, "size": 21 })
      }
    }
  },
  /**
   * 所有列表上拉加载数据
   */
  pullList: function(model) {
    // 数据全部加载完数据之后，禁止调用接口
    if (this.data.tabIndex === 1) {
      if (this.data.list.content.length === this.data.list.count) {
        wx.hideNavigationBarLoading()
        return
      }
      // 调用数据接口
      request.callList(model, 50).then(res => {
        if (res.content) {
          // 重新计算列表的高度
          // this.changeHeight(res.content)
          // 循环数据将新的数据从后放入渲染数组
          this.data.list.content = [...this.data.list.content, ...res.content]
          this.setData({ list: this.data.list })
          wx.hideNavigationBarLoading()
        }
      })
      return
    }
    if (this.data.tabIndex === 2) {
      if (this.data.smsList.content.length === this.data.smsList.count) {
        return
      }
      request.smsList({ "page": this.data.page, "pageSize": 21 }).then((res) => {
        this.data.smsList.content = [...this.data.smsList.content, ...res.content]
        this.setData({ smsList: this.data.smsList})
        wx.hideNavigationBarLoading()
      })
    }
  },
  /**
   * 获取页面的高度赋值给swiper
   * author wl
   */
  changeHeight(data) {
    // 如果有电话列表数据，且为列表页
    if (data && this.data.swiperIndex===1) {
      // 设置swiper高度
      this.domInter(".list-height", this).then(res => {
        this.setData({ swiperHeight: res.height + 10 })
      })
      return
    }
    // 计算拨号键页面的swiper高度
    if (this.data.swiperIndex === 0) {
      this.domInter(".fixed-white", this).then(res => {
        this.setData({ swiperHeight: res.height + 50})
      })
      return
    }
  },
  /**
   * 选择房客源
   */
  typeChange(e) {
    // 获取选中的房客源
    this.setData({
      // 调用组件事件checked为true
      resourceType: e.detail.model,
      resourceValue: e.detail.value
    })
  },
  /**
   * 选择类型
   */
  utypeChange(e) {
    // 获取选中房客源类型
    this.setData({
       // 调用组件事件checked为true
      saleType: e.detail.model,
      saleValue: e.detail.value
    })
  },
  /**
  * 选择通话呼入呼出
  */
  calltypeChange(e) {
    this.setData({
      // 调用组件事件checked为true
      callType: e.detail.model,
      callValue: e.detail.code
    })
  },
  /**
   * 切换tab
   * @author wl
   */
  callTab: function (e) {
    this.setData({
      tabIndex: e.currentTarget.dataset.index,
      animation: false
    })
    if (this.data.scrollBarTop > 0) {
      this.backTop()
    }
    if (e.currentTarget.dataset.index ===1) {
      // 获取所有通话列表
      wx.showNavigationBarLoading()
      this.callList({ "page": 1, "size": 21, "callRecordsPageWhereVO": {} }, "loading")
      this.setData({  page: 1,count: 1 })
      return
    }
    if (e.currentTarget.dataset.index === 2) {
      wx.showNavigationBarLoading()
      this.smsList()
      return
    }
  },
  smsList (not) {
    let that = this
    timeCount_1 = setInterval(() => {
      this.data.flag_1 += 1
      if (this.data.flag_1 > 0) {
        that.setData({ animation: true })
      }
    }, 200)
    this.setData({ page: 1, count: 1 })
    // 获取所有通话列表
    request.smsList({ "page": 1, "pageSize": 21 }).then((res) => {
      if (res) {
        // 停止计算
        clearInterval(timeCount_1)
        timeCount_1 = null
        that.setData({ animation: false })
        this.setData({ smsList: res })
        wx.stopPullDownRefresh()
        wx.hideNavigationBarLoading() 
      }
  })
  },
  /**
   * 进入房源筛选
   * author wl
   */
  filterbar() {
    wx.navigateTo({
      url: `../phone_filter/index`
    })
  }
})